Client-server systems are very common in today's technological environment. In some cases, a client-server system may be deployed across customer boundaries; that is, the server is operated by a vendor, and the client is operated by a customer of the vendor. In these situations, the server may need to send a message to the client, but the customer site where the client resides may not allow an open port for inbound messages due to the security risk involved. This is often addressed by having the client poll the server for new messages from the server. In other words, the client pulls information from the server, rather than permitting the server to push information to the client.
Where a client desires to pull messages from the server and to react to such messages in a timely manner, the client may typically be configured to poll the server frequently. This can cause unwanted network traffic and server load, slowing down the performance of the client-server system. Many times, the client polls the server and the server has no message for the client. Therefore, the network and computing performance degradation is caused primarily by wasted communications.
Such performance degradation is especially problematic in situations where a vendor provides a remote service to a set of customers and that vendor needs to be able to both scale and provide varying degrees of service levels to the vendor's customers according to a service level agreement (“SLA”). The problem is further complicated by the fact that a vendor's remote services may vary and may require multiple simultaneous types of polling.
Traditional solutions involve a set interval by which the client will periodically poll the server for new messages. This type of static polling results in wasted network communications, since the server may not typically have a message to send to the client. If a substantial number of clients communicate with one server in this manner, the server will be unnecessarily loaded and the performance between the clients and the server will degrade.
Handling client server polling efficiently is often addressed through the usage of adaptive polling. Adaptive polling is a concept where the polling is regulated in a way to efficiently handle the communication between a client and a server. Existing solutions have not attempted to address dynamic handling of customers differently based upon both the message types and the customers' service level agreements.